There are a lot of natural places to break lines. Directly after a semicolon or comma, or directly before a low-precedence operator are the most preferable I think. Also, when nested inside parentheses, try to break lines at the shallower nesting levels, not the deeper ones.
For instance:
Code:
x = this_is_a(1, 2, very_long(line(3, 4, 5)));
You might break it as:
Code:
x = this_is_a(1, 2,
very_long(line(3, 4, 5)));
Or less preferably at a deeper nest level, like this:
Code:
x = this_is_a(1, 2, very_long(line(3,
4, 5)));
For an if-statement:
Code:
if(initializer;
condition;
increment)
{
}
For a long expression involving operators:
Code:
x = some_thing(x, 1, 2) && some_other_thing() && !yet_another_thing();
Break as:
Code:
x = some_thing(x, 1, 2) && some_other_thing()
&& !yet_another_thing();
Or if there are a whole bunch of conditions, line it up neat like:
Code:
if( condition1
&& condition2
&& condition3
&& condition4)
{
}
The advantage of breaking BEFORE an operator is that you can immediately tell, just by looking at that single line, that it is a continuation of a previous line. The indentation should also help tell you that it's a continuation.
As for specifically how to indent, and how to line up continuation lines, I think that's purely a matter of preference, but I DO think it is important to pick some consistent alignment strategy, and to break BEFORE operators, not after them.